perm filename WALK3.SAI[HAK,HPM] blob sn#126066 filedate 1974-10-21 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN "WALK"
C00005 ENDMK
C⊗;
BEGIN "WALK"
REQUIRE "DDSUB.SAI[GRA,HPM]" SOURCE_FILE;
REAL X,Y,X1,Y1,D,VX,VY,LIMIT,VV,V,DD,K,T;
REAL ARRAY SX,SY[1:30];
INTEGER I,CHAN;
OUTSTR("CHANNEL NO:"); IF (CHAN←CVO(INCHWL))=0 THEN CHAN←-1;
LIMIT←3000;
FOR I←1 STEP 1 UNTIL 30 DO
 BEGIN
 SX[I]←LIMIT*COS(I*2*3.14159265/30)/6;
 SY[I]←LIMIT*SIN(I*2*3.14159265/30)/6;
 END;
DDINIT;
SCREEN(-LIMIT,-LIMIT,LIMIT,LIMIT);
DRKEN; RECTAN(-2*LIMIT,-2*LIMIT,2*LIMIT,2*LIMIT);
LITEN; POLYGO(30,SX[1],SY[1]);
LINE(-LIMIT,-LIMIT,LIMIT,-LIMIT);
LINE(LIMIT,-LIMIT,LIMIT,LIMIT);
LINE(LIMIT,LIMIT,-LIMIT,LIMIT);
LINE(-LIMIT,LIMIT,-LIMIT,-LIMIT);
INVEN;
DPYUP(CHAN);
RAN(CALL(0,"RUNTIM"));
VX←-30*RAN(0); VY←30*RAN(0); X←LIMIT*(1-2*RAN(0)); Y←LIMIT*(1-2*RAN(0));
K←1000000;
WHILE TRUE DO
 BEGIN
 IF RAN(0)<.01 THEN
  BEGIN
  RECTAN(X-LIMIT/64,Y-LIMIT/64,X+LIMIT/64,Y+LIMIT/64);
  D←2*3.14159265*RAN(0); VX←VX+10*SIN(D); VY←VY+10*COS(D);
  END;
 FOR I←1 STEP 1 UNTIL 10 DO
  BEGIN
  DD←X↑2+Y↑2;
  T←D←SQRT(DD);
  IF T>LIMIT/6 THEN
   BEGIN
   VX←VX-K*X/D↑3; VY←VY-K*Y/D↑3;
   X1←X+VX; Y1←Y+VY;
   DD←X1↑2+Y1↑2; D←SQRT(DD);
   IF D≤LIMIT/6 THEN
    BEGIN
    T←VX*X1+VY*Y1;
    VX←VX-1.8*X1*T/DD;
    VY←VY-1.8*Y1*T/DD;
    END;
   END;
  IF ABS(X1)>LIMIT THEN VX←-.9*VX;
  IF ABS(Y1)>LIMIT THEN VY←-.9*VY;
  X1←X+VX; Y1←Y+VY;
  LINE(X,Y,X1,Y1); X←X1; Y←Y1;
  END;
 DPYUP(CHAN);
 END;
END;